# -*- coding: utf-8 -*-
"""
商业地产爬虫系统配置文件
"""

import os
from pathlib import Path

# 项目根目录
PROJECT_ROOT = Path(__file__).parent.parent

# 数据库配置
DATABASE_CONFIG = {
    'sqlite': {
        'url': f'sqlite:///{PROJECT_ROOT}/data/real_estate_leads.db',
        'echo': False  # 设置为True可以看到SQL语句
    }
}

# 目标网站配置
TARGET_SITES = {
    'pupuwang': {
        'base_url': 'https://sz.pupuwang.com/siting/list',
        'name': '铺铺旺'
    }
}

# 目标城市配置
TARGET_CITIES = [
    {'name': '深圳', 'code': 'sz'},
    {'name': '杭州', 'code': 'hz'},
    {'name': '长沙', 'code': 'cs'},
    {'name': '西安', 'code': 'xa'},
    {'name': '厦门', 'code': 'xm'},
    {'name': '南宁', 'code': 'nn'},
    {'name': '北京', 'code': 'bj'},
    {'name': '武汉', 'code': 'wh'}
]

# 目标业态配置
TARGET_BUSINESS_TYPES = [
    {'name': '餐饮', 'code': '11'},
    {'name': '娱乐', 'code': '14'},
    {'name': '零售', 'code': '15'}
]

# 爬虫配置
CRAWLER_CONFIG = {
    'user_agents': [
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    ],
    'request_delay': {
        'min': 1,  # 最小延时（秒）
        'max': 3   # 最大延时（秒）
    },
    'timeout': 30,  # 页面加载超时时间（秒）
    'max_retries': 3  # 最大重试次数
}

# 数据处理配置
DATA_CONFIG = {
    'date_range_days': 30,  # 数据时间范围（天）
    'excel_output_path': PROJECT_ROOT / 'data' / 'leads_export.xlsx',
    'batch_size': 100  # 批量处理大小
}

# 日志配置
LOGGING_CONFIG = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
        },
        'detailed': {
            'format': '%(asctime)s [%(levelname)s] %(name)s:%(lineno)d: %(message)s'
        }
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': PROJECT_ROOT / 'logs' / 'crawler.log',
            'maxBytes': 10485760,  # 10MB
            'backupCount': 5,
            'formatter': 'detailed'
        }
    },
    'loggers': {
        '': {  # root logger
            'handlers': ['console', 'file'],
            'level': 'DEBUG',
            'propagate': False
        }
    }
}

# 调度器配置
SCHEDULER_CONFIG = {
    'timezone': 'Asia/Shanghai',
    'job_defaults': {
        'coalesce': False,
        'max_instances': 1
    }
}
